package com.client;

import com.utils.KeyUtil;
import com.utils.LogUtil;


/**
 * 使用私钥{@code PrivateKeyPEM }来初始化RepChainClient
 * @author zyf
 */
public class RepChainPemClient extends RepChainClient {

    public RepChainPemClient() {
    }

    /**
     * @param host 服务主机地址
     */
    public RepChainPemClient(String host) {
        super(host);
    }

    /**
     * 使用pem(私钥文件路径或私钥字符串)初始化Client
     *
     * @param host               服务主机地址
     * @param priPemPathOrString Pem文件（私钥）路径，或者是字符串
     * @param password           私钥密码
     */
    public RepChainPemClient(String host, String priPemPathOrString, String password) {
        try {
            this.host = host;
            initialPem(priPemPathOrString, password);
        } catch (Exception e) {
            e.printStackTrace();
            logMsg(LogUtil.LogType.Error, e.getMessage());
        }
    }

    /**
     * 设置Pem（文件路径或字符串）
     * @param priPemPathOrString   私钥文件路径,或者字符串
     * @param password   私钥密码
     */
    public void setPem(String priPemPathOrString, String password) {
        try {
            initialPem(priPemPathOrString, password);
        } catch (Exception e) {
            e.printStackTrace();
            logMsg(LogUtil.LogType.Error, e.getMessage());
        }
    }

    /**
     * 初始化pemClient客户端
     * @param priPemPathOrString
     * @param password
     * @throws Exception
     */
    private void initialPem(String priPemPathOrString, String password) throws Exception{
        this.privateKey = KeyUtil.generatePrikeyWithPem(priPemPathOrString, password);
        this.pemInit = true;
        logMsg(LogUtil.LogType.Info,"RepChainPemClient使用priPEM初始化成功");
    }

}
